package com.shujia.five;

import org.junit.Test;

import java.io.*;

public class BufferedStreamDemo2 {

    @Test
    public void test3() {
        try {
            BufferedReader br = new BufferedReader(new FileReader("file\\《仙逆》.txt"));
            BufferedWriter bw = new BufferedWriter(new FileWriter("file\\仙逆.txt"));
            String str;
            while ((str = br.readLine()) != null) {
                // 写入字符串, 如果缓冲的数组满了, 会自动触发io操作
                bw.write(str);
                // 换行
                bw.newLine();
                // 如果字节刷新的话, 那么读取的字符数量不足8192个, 也会刷新
                // 刷新会触发一次底层的io, 这样的话就体现不出缓冲流的效果
                // bw.flush();
            }

            // 文本读写结束,最后一次写操作没有写满, 这些数据还提留在缓冲数组里
            // 没有触发io操作, 这个时候文件是不完整的, 需要手动刷新一次
            bw.flush();

            // close方法也会触发io操作


        } catch (IOException e) {

        }
    }

    @Test
    public void test1() {
        try (BufferedReader br = new BufferedReader(new FileReader("file\\《仙逆》.txt"));
             BufferedWriter bw = new BufferedWriter(new FileWriter("file\\仙逆.txt"))) {

            String str;
            while ((str = br.readLine()) != null) {
                // 写入字符串, 如果缓冲的数组满了, 会自动触发io操作
                bw.write(str);
                // 换行
                bw.newLine();
                // 如果字节刷新的话, 那么读取的字符数量不足8192个, 也会刷新
                // 刷新会触发一次底层的io, 这样的话就体现不出缓冲流的效果
                // bw.flush();
            }

            // 文本读写结束,最后一次写操作没有写满, 这些数据还提留在缓冲数组里
            // 没有触发io操作, 这个时候文件是不完整的, 需要手动刷新一次
            bw.flush();

            // close方法也会触发io操作


        } catch (IOException e) {

        }
    }
}
